Computer graphics systems generally comprise a geometry processing unit which receives data defining the geometry to be rendered and converts this to a set of graphics primitives (also referred to as polygons), typically triangles, which are used when rendering the image. The surfaces of each object are sub-divided into these graphics primitives. Each triangular primitive is defined by a set of vertices which, in turn, defines the planar surface and the extent of that surface.
There are two main families of computer graphics systems: tile-based systems and immediate mode systems.
In tile-based rendering systems, the display or framebuffer is conceptually subdivided into a plurality of rectangular areas, known as “tiles”, each corresponding to a (usually) predetermined number of pixels (e.g. 32*32). For each tile, an object list is compiled which references or contains (at least) the primitives in the image which intersect, or potentially intersect, that tile. This process is sometimes referred to as “tiling” or “binning”. Thus, tiles do not need to process the objects which do not intersect them. A tiling unit is often used to improve the speed of creating the per-tile lists.
In immediate mode renderers, although scanline-order processing of primitives is frequently employed, some systems instead opt to divide the screen into tiles of pixels. The rendering of each primitive is done on a tile by tile basis, with each pixel in a tile being processed before progressing to the next tile. The rendering order is chosen to improve locality of memory references e.g. the texture fetches. Note that, with immediate mode renderers, no per-tile lists are created and each primitive appears to be rendered immediately—although, due to pipelining and parallelism, there may, of course, be a number of primitives being processed simultaneously.
During the rendering of the pixels (in either tile-based or immediate mode rendering systems), a graphics system will usually determine which pixels an object intersects (also known as scan conversion) and which object is visible at each pixel using depth testing to find the closest object to a view point. Texturing and shading data can then be applied to the pixel. Where objects are transparent, data from a frontmost object and from objects behind it may be required to properly texture and shade a pixel.